/**
 * 给定两个字符串 order 和 s 。order 的所有单词都是 唯一 的，并且以前按照一些自定义的顺序排序。
 *
 * 对 s 的字符进行置换，使其与排序的 order 相匹配。更具体地说，如果在 order 中的字符 x 出现字符 y 之前，那么在排列后的字符串中， x 也应该出现在 y 之前。
 *
 * 返回 满足这个性质的 s 的任意排列 。
 * https://leetcode.cn/problems/custom-sort-string/description/
 */
class CustomSortString {
    public String customSortString(String order, String s) {
        int[] arr = new int[26];
        int len = s.length();
        for(int i=0;i<len;i++) {
            arr[s.charAt(i)-'a']++;
        }
        int len2 = order.length();
        StringBuilder ans = new StringBuilder();
        for(int i=0;i<len2;i++) {
            char ch = order.charAt(i);
            while(arr[ch-'a']>0) {
                ans.append(ch);
                arr[ch-'a']--;
            }
        }
        for(int i=0;i<len;i++) {
            while(arr[s.charAt(i)-'a']>0) {
                ans.append(s.charAt(i));
                arr[s.charAt(i)-'a']--;
            }
        }
        return ans.toString();
    }
}